Within large business enterprises, management of business processes is becoming a more significant issue as companies vie to improve efficiency, reduce costs, increase profits and gain more flexible and dynamic infrastructures. Business processes are a part of the day-to-day operations and services of any corporation. For example, a business process may include applying for a home loan (e.g. loan origination process), starting a mobile phone service (account initiation process), hiring a new employee (employee on-boarding process), building a new jet engine (parts and assembly process), as well as countless other processes performed by enterprises and organizations in order to accomplish specific goals.
Processes can range from very simple to highly complex and sophisticated, involving numerous decisions, tasks and activities. In this context, a business process can be thought of as a series of steps (tasks) that are executed in a particular order or path in order to achieve an objective in an organization. A business process can be visualized as a flowchart of a sequence of activities. Business processes often change over time and are useful for analyzing and optimizing the business model of a particular organization.
Business Process Execution Language (BPEL) is a text-based (XML) executable language for representing business processes. It is particularly useful to define business processes that use Web Services to interact with other entities. BPEL can be used as a standard executable orchestration language to specify interactions with Web Services. BPEL processes are represented in extensible markup language (XML) and these processes orchestrate synchronous and asynchronous services into end-to-end flows.
Business Process Execution Language (BPEL) may be used for defining how business processes interact with web services. In some instances, when a BPEL process is being executed, interaction with an external web service is necessary. Waiting for a response from the external web service or some other entity may take a significant amount of time, such as several minutes, hours, or days. When a response is required, rather than maintaining the BPEL process as active, it may be more efficient to temporarily suspend processing of the BPEL process to free memory and/or processing resources.
To suspend the BPEL process instance, dehydration may be performed. Dehydration involves data related to the BPEL process instance being stored in a data storage structure, such as a database residing on a hard drive, until processing is to resume. Such dehydration may involve all values of variables of the BPEL process being stored and an indication of where in the BPEL code the BPEL process was suspended. This data may be stored in the dehydration store. Once a response is received from the external web service, the BPEL process instance may be “rehydrated,” such that the values of variables are reloaded from the data storage structure, and the BPEL process can continue being processed.
However, where multiple process instances are interested in the same data, it is important to ensure that the multiple process instances do not modify the same data object at the same time. Accordingly it is desirable to provide systems and methods which prevent conflicting access to data objects upon rehydration of a BPEL process instance. It would further be desirable that the systems and methods have low overhead with respect to memory, processing, and latency.